#pragma once
#include "Vertex.h"
#include "Matrix.h"
#include "InputManager.h"
#include "Timer.h"

class Camera{
private:
	Matrix mPerpestive;
	float m_nearPlane;
	float m_farPlane;
	float m_FOV;
	float m_aspect;
	float m_speed;
	InputManager* IM;
public:
	Matrix CalculateViewMatrix();
	Matrix CalculateWorldMatrix();
	Vector3 position;
	float rotx;
	float roty;
	float rotz;
	void Init(float nearPlane, float farPlane, float FOV, float aspect, float speed);
	Matrix worldMatrix;
	Matrix viewProjectionMatrix;
	void Go(float up, float forward, float right);
	void RotateUp(float angle);
	void RotateDown(float angle);
	void RotateLeft(float angle);
	void RotateRight(float angle);
	void Update();
	Matrix LookAt(Vector3 target);
	Vector3 target;
	Vector3 up;
	Camera();
	~Camera();
};